1. Field of the Invention
The present invention relates to numerically controlled oscillators. In particular, the invention relates to multifunctional numerically controlled oscillators that concurrently generate more than one waveform.
2. Description of the Related Art
FIG. 1 shows an example of how a cosine waveform may be stored for retrieval and reproduction by a circuit device. A cosine waveform 28 may be stored as a plurality of stored numerical cosine values 30. The quantity of stored numerical cosine values 30 may be increased as desired for more accurate representation of the cosine waveform 28. The cosine waveform 28 is periodic, so a periodic cosine signal may be reproduced by generating a signal having amplitudes corresponding to the stored numerical cosine values 30.
Because the cosine waveform 28 is symmetric, it is not necessary to store all of the stored numerical cosine values. One period of the cosine waveform 28 may be divided into four quadrants 20, 22, 24 and 26. Only the stored numerical cosine values 30 that are in the first quadrant 20 must be stored. To produce the stored numerical cosine values 30 in the second quadrant 22, the values of the first quadrant 20 may be used, but in reverse order and with a sign change. To produce the stored numerical cosine values 30 in the third quadrant 24, the values of the first quadrant 20 may be used, but with a sign change. To produce the stored numerical cosine values 30 in the fourth quadrant 26, the values of the first quadrant 20 may be used, but in reverse order. Thus, only one-fourth of the stored numerical cosine values 30 must be stored in memory, which reduces the amount of memory required.
However, issues arise when a user would like more than one similar waveform to be generated concurrently; for example, if a sine waveform 32 having the same period is desired in addition to the cosine waveform. Such a sine waveform is merely the cosine waveform 28 with a phase shift of one quadrant. Therefore, it is not theoretically required to store any more values than the stored numerical cosine values in one quadrant (e.g., the first quadrant 20).
However, when putting the theory into practice, a number of concerns arise. Since two waveforms are desired, the memory containing the stored numerical values 30 must be accessed twice for each output cycle. One way to access two values at once is to provide a second memory containing duplicate values, and to access each memory on each output cycle. However, this doubles the amount of memory required. A second potential solution is to use only one memory, but to access it with a doubled clock speed. This effectively accesses two of the stored numerical values on each output cycle. However, the technology used may not allow the memory to operate at twice the clock speed, or there may be a penalty of increased power for operating the memory at twice the speed.
Therefore, there is a need to generate multiple similar waveforms (e.g., a sine and a cosine) without additional memory or clocking requirements.